package com.hd123.rumba.gwt.widget2.client.grid;

import java.util.EventListener;

import com.google.gwt.user.client.ui.Widget;

/**
 * RGrid的点击事件监听器接口
 * 
 * @author LiQi
 * 
 */
public interface RGridClickListener extends EventListener {

  /**
   * 当RGrid单元格中的控件被点击时触发。
   * <p>
   * 如果单元格未包含控件则单元格本身被点击时也会触发。单元格未包含控件是指
   * {@link RGrid#getWidget(int, int)}返回null，也就是对此单元格没有调用过
   * {@link RGrid#setWidget(int, int, Widget)}。如果对单元格调用过
   * {@link RGrid#setText(int, int, String)}，这时单元格虽然未包含控件但内容并不为空。
   * <p>
   * 如果RGridColumnDef设置了RendererFactory，
   * 则此列的所有单元格都包含RendererFactory生产的控件；
   * 如果RGridColumnDef没有设置RendererFactory
   * ，则此列的所有单元格都不包含控件，而是用setText的方式显示provider提供的数据。
   * 
   * @param grid
   *          触发事件的RGrid
   * @param colDef
   *          被点击单元格所在列的列定义
   * @param row
   *          行序号，包含表格的表头和表尾
   * @param col
   *          可见列序号
   * @param sender
   *          被点击的控件，如果单元格未包含控件则为null
   */
  void onClick(RGrid grid, RGridColumnDef colDef, int row, int col, Widget sender);
}
